User Authentication এবং Authorization এর মধ্যে পার্থক্য
User Authentication এবং User Authorization দুটি গুরুত্বপূর্ণ নিরাপত্তা ফিচার, কিন্তু তাদের উদ্দেশ্য এবং কার্যকরী ভিন্ন। যদিও অনেক সময় এই দুটি বিষয় একসাথে ব্যবহৃত হয়, তবে তাদের কাজ আলাদা।
- Authentication: ব্যবহারকারীর পরিচয় যাচাই করা (ব্যবহারকারী কে?)
 - Authorization: ব্যবহারকারীকে নির্দিষ্ট রিসোর্স অ্যাক্সেস করার অনুমতি দেওয়া (ব্যবহারকারী কী করতে পারে?)
 
১. User Authentication
Authentication হলো প্রক্রিয়া যার মাধ্যমে সিস্টেমে প্রবেশকারী ব্যবহারকারীর পরিচয় নিশ্চিত করা হয়। এটি নিশ্চিত করে যে, যেই ব্যক্তি সিস্টেমে প্রবেশ করছে, সে আসলেই সেই ব্যক্তি যাকে সে দাবী করছে।
Authentication এর প্রক্রিয়া:
- ব্যবহারকারী তাদের username এবং password প্রদান করে সিস্টেমে লগইন করার চেষ্টা করে।
 - সিস্টেম পরে সেই তথ্য যাচাই করে যদি ব্যবহারকারী নিবন্ধিত থাকে এবং তথ্য সঠিক হয়, তবে access token বা session প্রদান করা হয়।
 - এর মাধ্যমে সিস্টেম বুঝতে পারে যে এটি অনুমোদিত ব্যবহারকারী, যা তাদের অ্যাকাউন্টের সঙ্গে সম্পর্কিত ডেটা অ্যাক্সেস করার অনুমতি দেয়।
 
Authentication উদাহরণ:
- Username / Password: একটি সাধারণ এবং প্রচলিত উপায় যেখানে ব্যবহারকারী তাদের username এবং password প্রদান করে।
 - Multi-Factor Authentication (MFA): ব্যবহারকারীকে তাদের পরিচয় আরও একাধিক স্তরে যাচাই করার জন্য যেমন, SMS বা email কোড বা TOTP (Time-Based One-Time Password) ব্যবহার করা।
 
Authentication উদাহরণ (Node.js ও Passport.js):
// Passport.js ব্যবহার করে Authentication উদাহরণ
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
// Local Strategy দিয়ে Username/Password যাচাই
passport.use(new LocalStrategy(function(username, password, done) {
    User.findOne({ username: username }, function(err, user) {
        if (err) { return done(err); }
        if (!user) { return done(null, false, { message: 'Incorrect username.' }); }
        if (!user.validPassword(password)) {
            return done(null, false, { message: 'Incorrect password.' });
        }
        return done(null, user);
    });
}));
এখানে passport-local স্ট্র্যাটেজি ব্যবহার করে username এবং password যাচাই করা হচ্ছে।
২. User Authorization
Authorization হল প্রক্রিয়া যার মাধ্যমে সিস্টেম যাচাই করে যে ব্যবহারকারী কি ধরণের রিসোর্স অ্যাক্সেস করতে পারে এবং সে কি ধরনের কাজ করতে পারবে। এটি যাচাই করে, একবার একটি ব্যবহারকারী সিস্টেমে লগইন করার পর, সে কোন ডেটা বা ফিচার অ্যাক্সেস করতে পারে।
Authorization এর প্রক্রিয়া:
- লগইন করার পর, সিস্টেম ব্যবহারকারীর roles বা permissions চেক করে।
 - Roles এবং Permissions হল নির্দিষ্ট অধিকার যা নির্ধারণ করে যে ব্যবহারকারী কি করতে পারবে, যেমন “Admin”, “User”, “Manager” ইত্যাদি।
 - Authorization সাধারনত Role-Based Access Control (RBAC) অথবা Permission-Based Access Control ব্যবহার করে কার্যকর করা হয়।
 
Authorization উদাহরণ:
- Role-Based Access Control (RBAC): এখানে ব্যবহারকারীদের নির্দিষ্ট রোল দেওয়া হয়, এবং তাদের সেই রোল অনুযায়ী অ্যাক্সেস দেওয়া হয়। উদাহরণস্বরূপ, একটি Admin রোল ব্যবহারকারীকে সমস্ত ডেটা এবং অ্যাপ্লিকেশন ফিচারে অ্যাক্সেস প্রদান করবে, যেখানে User রোল কেবলমাত্র সীমিত ডেটা অ্যাক্সেস করবে।
 - Permission-Based Access Control: এখানে ব্যবহারকারীদের বিভিন্ন অনুমতি দেওয়া হয়, যেমন read, write, delete ইত্যাদি।
 
Authorization উদাহরণ (Node.js ও JWT):
// JWT (JSON Web Token) ব্যবহার করে Authorization উদাহরণ
const jwt = require('jsonwebtoken');
// Token তৈরি করা
const token = jwt.sign({ userId: user._id, role: user.role }, 'your_secret_key');
// Authorization middleware
function verifyToken(req, res, next) {
    const token = req.headers['authorization'];
    if (!token) {
        return res.status(403).send('No token provided');
    }
    jwt.verify(token, 'your_secret_key', function(err, decoded) {
        if (err) {
            return res.status(500).send('Failed to authenticate token');
        }
        // Authorization চেক (Role-based)
        if (decoded.role !== 'admin') {
            return res.status(403).send('Permission denied');
        }
        req.userId = decoded.userId;
        next();
    });
}
এখানে, JWT টোকেনের মাধ্যমে ব্যবহারকারীর role যাচাই করা হচ্ছে এবং শুধুমাত্র admin রোলের ব্যবহারকারী অ্যাডমিন প্যানেলে প্রবেশ করতে পারবে।
Authentication এবং Authorization এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Authentication | Authorization | 
|---|---|---|
| সংজ্ঞা | ব্যবহারকারীর পরিচয় যাচাই করা। | ব্যবহারকারী কোন রিসোর্স অ্যাক্সেস করতে পারবে তা নির্ধারণ করা। | 
| কাজ | ব্যবহারকারী কে, তার সঠিকতা যাচাই করা। | ব্যবহারকারীকে কী করতে দেওয়া হবে, সেটি যাচাই করা। | 
| উদাহরণ | Username/Password, OTP, Fingerprint | Role-based Access Control (RBAC), Permissions | 
| ফোকাস | Who is the user? | What can the user do? | 
| উদ্দেশ্য | ব্যবহারকারীর সঠিকতা যাচাই করা। | ব্যবহারকারীর অ্যাক্সেস স্তর নিয়ন্ত্রণ করা। | 
সারাংশ
Authentication এবং Authorization দুটি নিরাপত্তা ব্যবস্থার গুরুত্বপূর্ণ অংশ। Authentication নিশ্চিত করে যে ব্যবহারকারী সঠিক এবং বৈধ, এবং Authorization নিশ্চিত করে যে ব্যবহারকারী যে ডেটা বা ফিচার অ্যাক্সেস করতে চাচ্ছে, তার জন্য অনুমতি আছে কিনা। দুটি প্রক্রিয়া একসাথে সিস্টেমে নিরাপত্তা এবং অ্যাক্সেস নিয়ন্ত্রণে গুরুত্বপূর্ণ ভূমিকা পালন করে।
Read more